//
// Academic License - for use in teaching, academic research, and meeting
// course requirements at degree granting institutions only.  Not for
// government, commercial, or other organizational use.
//
// File: sim_kinematics.h
//
// Code generated for Simulink model 'sim_kinematics'.
//
// Model version                  : 1.47
// Simulink Coder version         : 9.8 (R2022b) 13-May-2022
// C/C++ source code generated on : Wed May 24 19:18:07 2023
//
// Target selection: ert.tlc
// Embedded hardware selection: ARM Compatible->ARM 64-bit (LP64)
// Code generation objectives: Unspecified
// Validation result: Not run
//
#ifndef RTW_HEADER_sim_kinematics_h_
#define RTW_HEADER_sim_kinematics_h_
#include "rtwtypes.h"
#include "slros_initialize.h"
#include "sim_kinematics_types.h"
#include <stddef.h>

// Macros for accessing real-time model data structure
#ifndef rtmGetErrorStatus
#define rtmGetErrorStatus(rtm)         ((rtm)->errorStatus)
#endif

#ifndef rtmSetErrorStatus
#define rtmSetErrorStatus(rtm, val)    ((rtm)->errorStatus = (val))
#endif

// Block signals (default storage)
struct B_sim_kinematics_T {
  char_T b_zeroDelimTopic[49];
  char_T b_zeroDelimTopic_m[48];
  SL_Bus_sim_kinematics_geometry_msgs_Twist b_varargout_2;
  char_T b_zeroDelimTopic_c[47];
  real_T phiFront;
  SL_Bus_sim_kinematics_std_msgs_Float64 BusAssignment;// '<S4>/Bus Assignment'
  SL_Bus_sim_kinematics_std_msgs_Float64 BusAssignment1;// '<S4>/Bus Assignment1' 
};

// Block states (default storage) for system '<Root>'
struct DW_sim_kinematics_T {
  FourWheelSteering_sim_kinemat_T robot;// '<S6>/Front Steering'
  ros_slroscpp_internal_block_P_T obj; // '<S17>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_p;// '<S16>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_g;// '<S15>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_o;// '<S14>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_l;// '<S12>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_m;// '<S11>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_f;// '<S10>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_c;// '<S9>/SinkBlock'
  ros_slroscpp_internal_block_S_T obj_d;// '<S2>/SourceBlock'
  boolean_T robot_not_empty;           // '<S6>/Front Steering'
};

// Parameters (default storage)
struct P_sim_kinematics_T_ {
  real_T FourWheelSteeringInverseKinemat;
                              // Mask Parameter: FourWheelSteeringInverseKinemat
                                 //  Referenced by: '<S6>/Front Steering'

  real_T FourWheelSteeringInverseKinem_a;
                              // Mask Parameter: FourWheelSteeringInverseKinem_a
                                 //  Referenced by: '<S6>/Front Steering'

  real_T FourWheelSteeringInverseKinem_i;
                              // Mask Parameter: FourWheelSteeringInverseKinem_i
                                 //  Referenced by: '<S6>/Front Steering'

  SL_Bus_sim_kinematics_geometry_msgs_Twist Out1_Y0;// Computed Parameter: Out1_Y0
                                                       //  Referenced by: '<S18>/Out1'

  SL_Bus_sim_kinematics_geometry_msgs_Twist Constant_Value;// Computed Parameter: Constant_Value
                                                              //  Referenced by: '<S2>/Constant'

  SL_Bus_sim_kinematics_std_msgs_Float64 Constant_Value_o;// Computed Parameter: Constant_Value_o
                                                             //  Referenced by: '<S8>/Constant'

  SL_Bus_sim_kinematics_std_msgs_Float64 Constant_Value_j;// Computed Parameter: Constant_Value_j
                                                             //  Referenced by: '<S13>/Constant'

};

// Real-time Model Data Structure
struct tag_RTM_sim_kinematics_T {
  const char_T * volatile errorStatus;
};

// Block parameters (default storage)
#ifdef __cplusplus

extern "C"
{

#endif

  extern P_sim_kinematics_T sim_kinematics_P;

#ifdef __cplusplus

}

#endif

// Block signals (default storage)
#ifdef __cplusplus

extern "C"
{

#endif

  extern struct B_sim_kinematics_T sim_kinematics_B;

#ifdef __cplusplus

}

#endif

// Block states (default storage)
extern struct DW_sim_kinematics_T sim_kinematics_DW;

#ifdef __cplusplus

extern "C"
{

#endif

  // Model entry point functions
  extern void sim_kinematics_initialize(void);
  extern void sim_kinematics_step(void);
  extern void sim_kinematics_terminate(void);

#ifdef __cplusplus

}

#endif

// Real-time Model object
#ifdef __cplusplus

extern "C"
{

#endif

  extern RT_MODEL_sim_kinematics_T *const sim_kinematics_M;

#ifdef __cplusplus

}

#endif

extern volatile boolean_T stopRequested;
extern volatile boolean_T runModel;

//-
//  The generated code includes comments that allow you to trace directly
//  back to the appropriate location in the model.  The basic format
//  is <system>/block_name, where system is the system number (uniquely
//  assigned by Simulink) and block_name is the name of the block.
//
//  Use the MATLAB hilite_system command to trace the generated code back
//  to the model.  For example,
//
//  hilite_system('<S3>')    - opens system 3
//  hilite_system('<S3>/Kp') - opens and selects block Kp which resides in S3
//
//  Here is the system hierarchy for this model
//
//  '<Root>' : 'sim_kinematics'
//  '<S1>'   : 'sim_kinematics/motion controller'
//  '<S2>'   : 'sim_kinematics/usr_message'
//  '<S3>'   : 'sim_kinematics/motion controller/Four-Wheel Steering Inverse Kinematics'
//  '<S4>'   : 'sim_kinematics/motion controller/dnyamic'
//  '<S5>'   : 'sim_kinematics/motion controller/steer'
//  '<S6>'   : 'sim_kinematics/motion controller/Four-Wheel Steering Inverse Kinematics/Inverse Kinematics'
//  '<S7>'   : 'sim_kinematics/motion controller/Four-Wheel Steering Inverse Kinematics/Inverse Kinematics/Front Steering'
//  '<S8>'   : 'sim_kinematics/motion controller/dnyamic/Blank Message'
//  '<S9>'   : 'sim_kinematics/motion controller/dnyamic/Publish'
//  '<S10>'  : 'sim_kinematics/motion controller/dnyamic/Publish1'
//  '<S11>'  : 'sim_kinematics/motion controller/dnyamic/Publish2'
//  '<S12>'  : 'sim_kinematics/motion controller/dnyamic/Publish3'
//  '<S13>'  : 'sim_kinematics/motion controller/steer/Blank Message'
//  '<S14>'  : 'sim_kinematics/motion controller/steer/Publish'
//  '<S15>'  : 'sim_kinematics/motion controller/steer/Publish1'
//  '<S16>'  : 'sim_kinematics/motion controller/steer/Publish2'
//  '<S17>'  : 'sim_kinematics/motion controller/steer/Publish3'
//  '<S18>'  : 'sim_kinematics/usr_message/Enabled Subsystem'

#endif                                 // RTW_HEADER_sim_kinematics_h_

//
// File trailer for generated code.
//
// [EOF]
//
